package com.qpkj.oms.service;

import java.util.List;

import com.qpkj.common.core.domain.AjaxResult;
import com.qpkj.oms.domain.*;
import com.qpkj.oms.parameter.TaskAddVo;
import com.qpkj.oms.parameter.TaskProductVo;
import com.qpkj.oms.parameter.TaskToppingVo;
import com.qpkj.oms.result.ProductResult;
import com.qpkj.oms.result.TaskReceiveResult;

/**
 * 任务Service接口
 *
 * @author ruoyi
 * @date 2022-12-20
 */
public interface IOmsTaskService {
    /**
     * 查询任务
     *
     * @param taskId 任务主键
     * @return 任务
     */
    public OmsTask selectOmsTaskByTaskId(Long taskId);

    /**
     * 查询任务列表
     *
     * @param omsTask 任务
     * @return 任务集合
     */
    public List<OmsTask> selectOmsTaskList(OmsTask omsTask);
    /**
     * 导出任务列表数据
     *
     * @param omsTask 任务
     * @return 任务集合
     */

    public List<OmsTask> selectOmsTaskListExport(OmsTask omsTask);

    /**
     * 新增任务
     *
     * @param taskAddVo 任务
     * @return 结果
     */
    public AjaxResult insertOmsTask(TaskAddVo taskAddVo);

    /**
     * 修改任务
     *
     * @param omsTask 任务
     * @return 结果
     */
    public int updateOmsTask(OmsTask omsTask);

    /**
     * 批量删除任务
     *
     * @param taskIds 需要删除的任务主键集合
     * @return 结果
     */
    public int deleteOmsTaskByTaskIds(Long[] taskIds);

    /**
     * 删除任务信息
     *
     * @param taskId 任务主键
     * @return 结果
     */
    public int deleteOmsTaskByTaskId(Long taskId);

    public AjaxResult taskTopping(TaskToppingVo taskToppingVo);

    /**
     * 取消任务
     *
     * @param taskId
     * @return
     */
    public AjaxResult taskCancel(Long taskId);

    public AjaxResult updateTaskDate(Long taskId, String time);
    public AjaxResult updateDeliver(Long taskId, String inputDeliver);

    /**
     * 获取领料
     *
     * @param taskId
     * @param type
     * @return
     */
    public List<TaskReceiveResult> getTaskStep(Long taskId, Integer type);

    /**
     * 任务操作
     *
     * @param taskId
     * @param stepId
     * @param type
     * @return
     */
    public AjaxResult taskOperation(Long taskId, Long stepId, Integer type);
    /**
     *补数
     *
     * @param productId
     * @param complementNum
     * @return
     */
    public AjaxResult taskcomplement(Long productId, Long complementNum,Long productNum,Long taskId,String isBuShu);

    /**
     * 半成品任务
     *
     * @param taskId
     * @return
     */
    public AjaxResult taskProductList(Long taskId);
    public AjaxResult taskContract(Long taskId);

    public AjaxResult taskAllProductList(Long taskId);

    public List<OmsTaskProduct> getTaskProductListByTaskId(Long taskId);

    public List<OmsProductNeeds> getTaskProductNeedsListByTaskId(Long taskId);

    public List<OmsAchievement> queryTaskAchievement(Long taskId, String achievementWorkshop);

}
